2 流模型与扩散模型
在前一节中,我们将生成式建模形式化为从数据分布 中采样。此外,我们了解到,采样可以通过将来自简单分布(如高斯分布 )的样本 转换为目标分布 的样本来实现。在本节中,我们将描述如何通过模拟适当构建的微分方程来实现所需的转换。具体而言,流匹配模型和扩散模型分别涉及模拟常微分方程(ODEs)和随机微分方程(SDEs) 。因此,本节的目标是定义和构建这些生成式模型,因为它们将在讲义的其余部分中使用。具体来说,我们首先定义常微分方程和随机微分方程,并讨论它们的模拟。其次,我们将描述如何使用深度神经网络对常微分方程 / 随机微分方程进行参数化。这将引导我们对流模型的定义,以及从这类模型中采样的基本算法。在后续章节中,我们将探索如何训练这些模型。
2.1 流模型
我们从定义常微分方程(ODEs)开始。常微分方程的解由一条轨迹(trajectory)定义,即形如以下形式的函数: 该函数将时间 t 映射到 空间中的某个位置。每个常微分方程由一个向量场(vector field) 定义,即形如以下形式的函数: 
也就是说,对于每个时间 t 和位置 x,我们得到一个向量 ,用于指定空间中的速度(见图 1)。常微分方程给轨迹施加了一个条件:我们希望轨迹 X “沿着向量场 的方向”,从点 开始。我们可以将这样的轨迹形式化为满足以下方程的解: 方程(1a)要求 的导数由 给出的方向来指定。方程(1b)要求我们在时间 时从 开始。现在我们可能会问:如果我们在 时从 开始,那么在时间 t 时我们会在哪里(即 是什么)?这个问题由一个称为 流(flow) 的函数来回答,该函数是常微分方程的解: 流流初始条件 对于给定的初始条件 ,常微分方程的轨迹可通过 恢复。因此,直观地说,向量场、常微分方程和流是对同一对象的三种描述: 向量场定义了常微分方程,其解就是流 。与所有方程一样,我们应该问问自己关于常微分方程的问题:解是否存在?如果存在,是否唯一?数学中的一个基本结论是,只要我们对 施加较弱的假设,对这两个问题的回答都是 “是”:
定理 3(流的存在性和唯一性) 如果 是连续可微的,且导数有界,那么方程(2)中的常微分方程有唯一解,由流 给出。在这种情况下,对于所有 t, 是一个微分同胚(diffeomorphism),即 是连续可微的,且其逆 也连续可微。
需要注意的是,在机器学习中,流的存在性和唯一性所需的假设几乎总是成立的,因为我们使用神经网络对 进行参数化,而它们的导数总是有界的。因此,定理 3 对你来说不应是个问题,而应是个好消息:在我们感兴趣的案例中,流是常微分方程的存在且唯一的解。证明可参见 [20, 4]。
示例 4(线性向量场) 让我们考虑一个简单的向量场示例 ,它是 x 的简单线性函数,即 (其中 )。那么函数: 定义了一个流 ,它求解了方程(2)中的常微分方程。你可以通过验证 并计算:
来自己验证这一点,其中(i)处我们使用了链式法则。在图 3 中,我们可视化了这种形式的流,它以指数形式收敛到 0。

模拟常微分方程(Simulating an ODE) 一般来说,如果 不像线性函数那么简单,就无法显式地计算流 。在这些情况下,人们会使用数值方法(numerical methods)来模拟常微分方程。幸运的是,这是数值分析中一个经过充分研究的经典课题,存在多种强大的方法 [11] 。其中最简单且最直观的方法之一是欧拉方法(Euler method) 。在欧拉方法中,我们用 初始化,并通过以下公式更新: 其中 是步长超参数, 。对于本课程,欧拉方法已经足够好用。为了让你感受一下更复杂的方法,让我们考虑亨恩方法(Heun’s method) ,其更新规则定义为: 新状态的初始猜测用当前状态和猜测状态下的平均进行更新 直观地说,亨恩方法的工作原理如下:它首先对下一步可能的状态做出一个初始猜测 ,但会通过更新后的猜测来修正最初采取的方向。
流模型(Flow models) 现在我们可以通过常微分方程构建生成式模型。记住,我们的目标是将简单分布 转换为复杂分布 。因此,模拟常微分方程是实现这种转换的自然选择。流模型由以下常微分方程描述: 随机初始化 其中向量场 是一个带有参数 的神经网络 。目前,我们将把 视为一个通用的神经网络,即一个带有参数 、形如 的连续函数。稍后,我们将讨论神经网络架构的特定选择。 我们的目标是让轨迹的终点 具有分布 , 即: 其中 描述了由 诱导的流。不过需要注意:尽管它被称为流模型, 但神经网络对向量场进行参数化,而不是对流进行参数化 。为了计算流,我们需要模拟常微分方程。在算法 1 中,我们总结了从流模型中采样的过程。

2.2 扩散模型
随机微分方程(SDEs)通过随机轨迹(stochastic trajectories)扩展了常微分方程的确定性轨迹。随机轨迹通常被称为随机过程(stochastic process) ,其定义为:
- 对于每个 , 是一个随机变量
- 是每次抽取 X 时的随机轨迹
特别地,当我们两次模拟同一个随机过程时,由于动态设计是随机的,可能会得到不同的结果。
布朗运动(Brownian Motion) 随机微分方程是通过 布朗运动(Brownian motion) 构建的,布朗运动是从物理扩散过程研究中产生的基本随机过程。你可以把布朗运动看作是连续的随机游走。让我们来定义它:布朗运动 是一个随机过程,满足 ,轨迹 是连续的,并且满足以下两个条件:
- 正态增量(Normal increments):对于所有 ,,即增量具有高斯分布,方差随时间线性增加( 是单位矩阵)。
- 独立增量(Independent increments):对于任意 ,增量 是相互独立的随机变量。
布朗运动也被称为维纳过程(Wiener process) ,这就是我们用 “W” 表示它的原因。我们可以用步长 近似模拟布朗运动,方法是设置 并通过以下公式更新: 在图 2 中,我们绘制了布朗运动的几个示例轨迹。布朗运动在随机过程研究中的核心地位,就如同高斯分布在概率分布研究中的地位一样。从金融到统计物理再到流行病学,布朗运动的研究有着超出机器学习的广泛应用。例如,在金融领域,布朗运动被用于对复杂的金融工具进行建模。而且,作为一种数学构造,布朗运动也很有趣:例如,虽然布朗运动的路径是连续的(所以你可以画它而无需提笔),但它们是无限长的(所以你永远画不完)。

从常微分方程到随机微分方程(From ODEs to SDEs) 随机微分方程的思想是通过添加由布朗运动驱动的随机动态,来扩展常微分方程的确定性动态。因为一切都是随机的,我们不能再像在方程(1a)中那样使用导数。因此,我们需要找到常微分方程的等价表述,使其不使用导数。为此,我们将常微分方程的轨迹 重新表述如下: 通过导数表示通过无穷小更新表示 其中 描述了小 时的可忽略函数,即满足 ,并且在(i)处我们只是使用了导数的定义。上面的推导只是重新表述了我们已经知道的内容: 常微分方程的轨迹 在每个时间步,都会沿着 方向迈出一小步。 现在,我们可以修改最后一个方程,使其具有随机性:随机微分方程的轨迹 在每个时间步,会沿着 方向迈出一小步,再加上来自布朗运动的一些贡献: 确定性部分随机性部分误差项 其中 描述扩散系数(diffusion coefficient) , 描述随机误差项,使得当 时,标准差 。上面的式子描述了一个随机微分方程(SDE) 。通常用以下符号表示: 初始条件 然而,要始终记住,上面的 “” 符号只是方程(6)的一种非形式化表示。不幸的是, 随机微分方程不再有流映射 了。这是因为 的值不再由 完全确定,因为演化本身是随机的。 不过,与常微分方程类似,我们有:
定理 5(随机微分方程解的存在性和唯一性)
如果 是连续可微的,且导数有界,并且 是连续的,那么方程(7)中的随机微分方程有一个解,由唯一的随机过程 给出,满足方程(6)。
如果这是一门随机微积分课程,我们会花几个讲座来证明这个定理,并以完全严格的数学方法构建随机微分方程,即从基本原理出发构建布朗运动,并通过 随机积分(stochastic integration) 构建过程 。由于本课程聚焦于机器学习,若需更专业的技术推导,可参考 [18] 。最后,注意到常微分方程也可视为扩散系数 的随机微分方程特例(此时随机项消失)。因此,在本课程后续内容中,提及随机微分方程时,会将常微分方程视为其特殊情况。
示例 6(奥恩斯坦-乌伦贝克过程) 考虑扩散系数 为常数,且漂移项 ( 为常数),得到如下随机微分方程: 上述随机微分方程的解 被称为奥恩斯坦-乌伦贝克(OU)过程 。我们在图 3 中对其可视化。向量场 会推动过程回归到中心 0(形象地说,“我往哪个方向推,它就总往反方向走” ),而扩散系数 会不断为其添加噪声。当模拟时间 时, 该过程会收敛到高斯分布 。注意,当 时,就退化为我们在方程(3)中研究过的、具有线性向量场的流模型。

模拟随机微分方程(Simulating an SDE) 如果你目前对随机微分方程的抽象定义理解困难,别担心。有一种更直观的思考方式,就是回答 “如何模拟随机微分方程” 这个问题。最简单的模拟方案是欧拉-马里亚纳方法(Euler - Maruyama method) ,它对随机微分方程的意义,就如同欧拉方法对常微分方程的意义。使用欧拉 - 马里亚纳方法,我们用 初始化,然后通过以下公式迭代更新: 其中 是步长超参数, 。简而言之,用欧拉 - 马里亚纳方法模拟时,我们先沿着 方向迈出一小步,再添加一小部分由 缩放的高斯噪声。在本课程相关实验(如配套实验课)中模拟随机微分方程时,我们通常会采用欧拉 - 马里亚纳方法。
扩散模型(Diffusion Models) 现在,我们可以像构建基于常微分方程的生成式模型那样,构建基于随机微分方程的生成式模型。记住,我们的目标是将简单分布 转换为复杂分布 。与常微分方程类似,用 随机初始化后模拟随机微分方程,是实现这种转换的自然选择。为了对该随机微分方程进行参数化,我们可以简单地对其核心要素 —— 向量场 —— 用神经网络进行参数化。
因此,扩散模型可表示为: 随机初始化 
在算法 2 中,我们描述了用欧拉 - 马里亚纳方法从扩散模型中采样的过程。我们将本节内容总结如下。
总结 7(随机微分方程生成式模型) 在本文档中,扩散模型由带有参数 的神经网络 构成,该网络对向量场进行参数化,同时还有一个固定的扩散系数 :
神经网络: , ,带有参数
固定项: ,
为了从我们的随机微分方程模型中获取样本(即生成物体),过程如下:
初始化: ,用简单分布初始化,如高斯分布
模拟: ,模拟从 0 到 1 的随机微分方程
目标: ,目标是让 服从分布
当 时,扩散模型就是流模型 。
3 构建训练目标
在前一节中,我们构建了流模型和扩散模型,通过模拟常微分方程 / 随机微分方程得到轨迹 ,形式如下: (流模型)(扩散模型) 其中 是神经网络, 是固定扩散系数。显然,若随机初始化神经网络参数 并模拟常微分方程 / 随机微分方程,结果会毫无意义。与机器学习常规流程一致,我们需训练神经网络,通过最小化损失函数 (如均方误差 )实现: 训练目标 这里 是我们期望逼近的训练目标 。推导训练算法分两步,本章先推导训练目标 的方程,下一章描述逼近该训练目标的算法。和神经网络 类似,训练目标本身应是向量场 且需实现我们期望 达成的功能:将噪声转换为数据。因此,本章目标是推导训练目标 的公式,使对应的常微分方程 / 随机微分方程能将 转换为 。过程中会涉及数学物理和随机微积分的两个基本结论:连续性方程(continuity equation) 和福克 - 普朗克方程(Fokker - Planck equation) 。与之前一致,我们先针对常微分方程描述关键思想,再推广到随机微分方程。
说明 8
推导流模型和扩散模型的训练目标有多种方法。我们介绍的方法兼具通用性与简洁性,与当前最先进模型接轨,但可能和你之前见过的扩散模型的旧表述不同。后续会讨论其他形式。
3.1 条件概率路径与边缘概率路径
构建训练目标 的第一步是指定概率路径(probability path) 。直观而言,概率路径定义了从噪声分布 到数据分布 的渐进插值(见图 4 )。

本节解释其构建方式。对于数据点 ,记 为狄拉克 delta “分布” ,它是最简单的分布,采样时始终返回 z(即确定性分布 )。条件(插值)概率路径 是 上的一组分布 ,满足: 对所有 换言之,条件概率路径将单个数据点逐步转换为分布 (见图 4 )。可将概率路径视为分布空间中的轨迹。每个条件概率路径 会诱导出边缘概率路径(marginal probability path) ,其定义为:先从数据分布采样数据点 ,再从 采样得到的分布,即: 从边缘路径采样边缘路径的概率密度 需注意,我们知道如何从 采样,但由于积分难以计算,无法得知密度值 。自行验证:因方程(12)中对 的条件限制,边缘概率路径 在 和 间插值: 且噪声数据插值
示例 9(高斯条件概率路径) 一种极为常用的概率路径是高斯概率路径 ,也是去噪扩散模型采用的概率路径。设 为噪声调度器(noise schedulers) :两个连续可微的单调函数,满足 且 。定义条件概率路径: 高斯条件路径 根据对 和 施加的条件,有: 这里利用了 “方差为 0、均值为 z 的正态分布就是 ” 这一事实。因此,对 ,该 选择满足方程(12),是有效的条件插值路径。高斯条件概率路径具备若干实用性质,与我们的目标高度契合,因此在本节剩余部分,将其作为条件概率路径的典型示例。在图 4 中,展示了其在图像上的应用。从边缘路径 采样可表示为: 从边缘高斯路径采样 直观来看,上述过程在 t 较小时添加更多噪声,直到 时,仅剩下噪声。在图 5 中,展示了高斯噪声与简单数据分布间的此类插值路径示例。

3.2 条件向量场与边缘向量场
接下来,利用刚定义的概率路径 构建流模型的训练目标 。思路是从可手动解析推导的简单组件构建 。
定理 10(边缘化技巧)
对每个数据点 ,设 为条件向量场(conditional vector field) ,定义为:对应的常微分方程轨迹满足条件概率路径 ,即: 那么,边缘向量场(marginal vector field) 定义为: 它遵循边缘概率路径,即: 特别地,对该常微分方程,有 ,因此可称 “将噪声 转换为数据 ” 。
在证明边缘化技巧(定理 10 )前,先说明其有用性:该定理允许我们从条件向量场构建边缘向量场,大幅简化了寻找训练目标公式的问题,因为我们通常可手动解析推导(通过简单代数运算)满足方程(18)的条件向量场 。以高斯概率路径的示例,推导对应的条件向量场 来说明。
示例 11(高斯概率路径的目标常微分方程) 如前所述,设 ,其中 是噪声调度器(见方程(16) )。记 , 分别为 和 对时间的导数。在此,我们要证明由下式给出的条件高斯向量场(conditional Gaussian vector field) : 是定理 10 意义上有效的条件向量场模型:若 ,其常微分方程轨迹 满足 。在图 6 中,通过对比条件概率路径的真实样本与该流的模拟常微分方程轨迹样本,直观验证了分布匹配。现进行证明。

图 6 对定理 10 进行了可视化说明:用常微分方程模拟概率路径。蓝色背景为数据分布 ,红色背景为高斯分布 。第一行:条件概率路径。左:条件路径 的真实样本;中:常微分方程随时间的样本;右:用方程(21)中的 模拟常微分方程得到的轨迹。第二行:模拟边缘概率路径。左:边缘路径 的真实样本;中:学习到的边缘常微分方程的样本;右:用边缘向量场 模拟常微分方程得到的轨迹。可见,条件向量场遵循条件概率路径,边缘向量场遵循边缘概率路径。
证明:先定义条件流模型 ,令: 若 是初始值 时, 对应的常微分方程轨迹,根据定义: 由此得出,轨迹的分布与条件概率路径一致(即满足方程(18) )。接下来,从 中提取向量场 。根据流的定义(方程(2b) ),有: 对所有对所有对所有对所有 其中(i)处使用了 的定义(方程(22) );(ii)处对 x 重新参数化,令 ;(iii)处进行了简单代数运算。最后一个方程就是方程(21)中定义的条件高斯向量场。这就证明了该结论。也可通过将其代入本节后续介绍的连续性方程,双重验证是否满足定理 10 。
本节剩余部分将通过连续性方程(continuity equation) 证明定理 10,连续性方程是数学和物理中的基本结论。为解释它,需用到散度算子(divergence operator) ,定义为:
定理 12(连续性方程)
考虑一个流模型,其向量场为 ,且 。那么,对于所有 , 当且仅当: 对所有 其中 表示 对时间的导数 。方程 24 被称为连续性方程 。
对于有数学基础的读者,附录 B 中给出了连续性方程的自包含证明。在继续深入之前,让我们尝试直观理解连续性方程。左侧的 描述了概率 随时间的变化情况。直观地说,这种变化应该对应于概率质量的净流入。对于流模型,粒子 沿着向量场 运动。正如你可能从物理知识中回忆到的,散度衡量了向量场的净流出。因此,负散度 衡量了概率质量的净流入。用当前位于 x 处的总概率质量对其进行缩放,得到 ,它衡量了概率质量的总流入。由于概率质量是守恒的,方程左右两侧应该相等!现在,我们从定理 12 出发来证明边缘化技巧。
证明:根据定理 12,我们需要证明如方程(19)所定义的边缘向量场 满足连续性方程。我们可以通过直接计算来做到这一点: 其中:
- (i)处使用了方程(13)中 的定义;
- (ii)处对条件概率路径 使用了连续性方程;
- (iii)处交换了积分和散度算子的顺序(利用方程(23)中散度的线性性质);
- (iv)处乘以并除以 ;
- (v)处使用了方程(19)中 的定义 。
在常微分方程的情况中,上述推导表明连续性方程得到了满足。根据定理 12,这足以推导出方程(20),证明完毕。
3.3 条件得分函数与边缘得分函数
我们刚刚成功构建了流模型的训练目标。现在,我们将这一思路推广到随机微分方程(SDEs)。为此,我们定义 的边缘得分函数(marginal score function) 为 。我们可以用它来将上一节的常微分方程(ODE)推广到随机微分方程,如下述结论所示。
定理 13(随机微分方程扩展技巧)
如前所述定义条件向量场 和边缘向量场 。那么,对于扩散系数 ,我们可以构建一个遵循相同概率路径的随机微分方程: 特别地,对于该随机微分方程,有 。如果我们用条件概率路径 和向量场 替换边缘概率 和向量场 ,同样的等式也成立。

我们在图 7 中对该定理进行了说明。定理 13 中的公式很有用,因为与之前类似,我们可以通过条件得分函数(conditional score function) 来表示边缘得分函数: 而条件得分函数 通常是我们可以解析求解的,如下例所示。
示例 14(高斯概率路径的得分函数) 对于高斯路径 ,我们可以利用高斯概率密度的形式(见方程(8) )得到: 注意,该得分是 x 的线性函数,这是高斯分布的一个独特特征。
在本节剩余部分,我们将通过福克 - 普朗克方程(Fokker - Planck Equation) 证明定理 13,该方程将连续性方程从常微分方程推广到了随机微分方程。为此,我们首先通过下式定义拉普拉斯算子(Laplacian operator) :
定理 15(福克 - 普朗克方程)
设 为概率路径,考虑如下随机微分方程: 那么,对于所有 , 服从分布 当且仅当福克 - 普朗克方程(Fokker - Planck equation) 成立: 对所有 福克 - 普朗克方程的自包含证明可在附录 B 中找到。注意,当 时,可从福克 - 普朗克方程推导出连续性方程。额外的拉普拉斯项 一开始可能难以理解。熟悉物理的人会注意到,该相同项也出现在热传导方程中(而热传导方程实际上是福克 - 普朗克方程的一个特例 )。热量在介质中扩散,我们添加了一个扩散过程(不是物理扩散,而是数学扩散 ),因此添加了这个额外的拉普拉斯项。现在,我们使用福克 - 普朗克方程来证明定理 13。
定理 13 的证明:根据定理 15,我们需要证明方程(25)中定义的随机微分方程满足 的福克 - 普朗克方程。我们可以通过直接计算来证明: 其中:
- (i)处使用了连续性方程;
- (ii)处添加并减去了相同项;
- (iii)处使用了拉普拉斯算子的定义(方程(29) );
- (iv)处使用了 ;
- (v)处使用了散度算子的线性性质。
上述推导表明,方程(25)中定义的随机微分方程满足 的福克 - 普朗克方程。根据定理 15,这意味着对于 ,有 ,符合预期。证明完毕。
说明 16(朗之万动力学) 当概率路径是静态的(即对于固定分布 p,有 )时,上述构造有一个著名的特例。在这种情况下,我们令 ,得到随机微分方程: 
这通常被称为朗之万动力学(Langevin dynamics) 。 是静态的意味着 。根据定理 13,立即可以得出这些动力学满足定理 13 中静态路径 的福克 - 普朗克方程。因此,我们可以得出结论:p 是朗之万动力学的平稳分布,即: 与许多马尔可夫链一样,在相当一般的条件下(见 3.3 节 ),这些动力学会收敛到平稳分布 p 。也就是说,如果我们选择 ,使得在 的条件下 ,那么朗之万动力学会收敛到 p 。这一事实使得朗之万动力学非常有用,它相应地成为了例如分子动力学模拟以及贝叶斯统计和自然科学中许多其他马尔可夫链蒙特卡罗(MCMC)方法的基础。
现在,我们总结本节的结果。
总结 17(训练目标的推导)
流模型的训练目标是边缘向量场(marginal vector field) 。为了构建它,我们选择一个条件概率路径(conditional probability path) ,满足 , 。接下来,找到一个条件向量场(conditional vector field) ,使得其对应的流 满足: 或者等价地, 满足连续性方程。然后,由下式定义的边缘向量场(marginal vector field) : 遵循边缘概率路径,即: 特别地,对于该常微分方程,有 ,因此 按预期 “将噪声转换为数据” 。
推广到随机微分方程(Extending to SDEs):对于与时间相关的扩散系数 ,我们可以将上述常微分方程推广到具有相同边缘概率路径的随机微分方程: 其中 是边缘得分函数(marginal score function) :
特别地,对于上述随机微分方程的轨迹 ,有 ,因此该随机微分方程 “将噪声转换为数据”,符合预期。一个重要的例子是高斯概率路径(Gaussian probability path) ,其公式如下: 其中,噪声调度器 是连续可微的单调函数,满足 且 。
4 训练生成式模型
在前两节中,我们展示了如何构建由神经网络给出向量场 的生成式模型,并推导出了训练目标 的公式。在本节中,我们将描述如何训练神经网络 以逼近训练目标 。首先,我们再次将范围限定在常微分方程(ODEs),从而得到流匹配(flow matching) 。其次,我们解释如何通过得分匹配(score matching) 将该方法推广到随机微分方程(SDEs)。最后,我们考虑高斯概率路径的特殊情况,从而得到去噪扩散模型(denoising diffusion models) 。有了这些工具,我们终于能得到一个端到端的流程,用于训练基于常微分方程和随机微分方程的生成式模型并进行采样。
4.1 流匹配
如前所述,考虑由下式给出的流模型: 流模型 我们知道,希望神经网络 等于边缘向量场 。换句话说,我们希望找到参数 ,使得 在下面的内容中,记 为区间 上的均匀分布, 为随机变量的期望值。要使 ,一种直观的方法是使用均方误差(mean-squared error) ,即流匹配损失(flow matching loss) ,定义如下: 其中 是边缘概率路径,(i)处使用了方程(13)给出的 的采样过程。直观来看,流匹配损失的工作方式是:首先,从 中随机抽取一个时间 t ;其次,从我们的数据集中随机抽取一个点 z ,从 中采样(例如,通过添加一些噪声 ),并计算 ;最后,计算神经网络的输出与边缘向量场 之间的均方误差。不幸的是,我们的工作尚未完成。虽然根据定理 10,我们知道 的公式: 但由于上述积分难以计算,我们无法高效地计算它。相反,我们将利用条件速度场(conditional velocity field) 可计算的这一事实。为此,定义条件流匹配损失(conditional flow matching loss) : 注意与方程(41)的区别:我们使用条件向量场 代替了边缘向量场 。由于我们有 的解析公式,因此可以轻松地最小化上述损失。但等等,针对我们关心的边缘向量场,对条件向量场进行回归有什么意义呢?事实证明,通过显式地对可计算的条件向量场进行回归,我们隐式地对难以计算的边缘向量场进行了回归。下一个结论使这种直观认识变得精确。
定理 18 边缘流匹配损失等于条件流匹配损失加上一个常数。 即: 其中 C 与 无关。因此,它们的梯度相等: 因此,使用例如随机梯度下降(SGD)最小化 ,等价于以相同方式最小化 。特别地,对于 的极小值点 ,将有 (假设参数化具有无限表达能力 )。
证明:证明过程通过将均方误差展开为三个分量并消去常数项来进行: 其中(i)由定义得出,(ii)使用了公式 ,(iii)定义了常数 ,(iv)使用了方程(13)给出的 的采样过程。现在重新表示第二个求和项: 其中(i)将期望值表示为积分,(ii)使用了方程(43),(iii)利用了积分的线性性质,(iv)将积分表示为期望值。注意,这实际上是证明的关键步骤。等式的开头使用了边缘向量场 ,而结尾使用了条件向量场 。将其代入 的方程中: 其中(i)代入了推导得到的方程,(ii)添加并减去了相同的值,(iii)再次使用了公式 ,(iv)定义了与 相关的常数。这就完成了证明。
一旦 经过训练,我们就可以模拟流模型: 例如,通过算法 1 得到样本 。整个流程在文献中被称为流匹配(flow matching) [14, 16, 1, 15] 。训练过程总结在算法 5 中,并在图 9 中可视化。现在,我们针对高斯概率路径的选择,实例化条件流匹配损失:

示例 19(高斯条件概率路径的流匹配) 回到高斯概率路径 的示例,我们可以通过以下方式从条件路径中采样: 如方程(21)中推导的,条件向量场 由下式给出: 其中 和 分别是对时间的导数。代入该公式,条件流匹配损失可表示为: 其中(i)代入了方程(46)并将 x 替换为 。注意 的简洁性:我们采样一个数据点 z ,采样一些噪声 ,然后计算均方误差。对于 和 的特殊情况,进一步具体化。对应的概率 有时被称为(高斯)CondOT 概率路径。此时,,,因此:
许多著名的最先进模型都使用这种简单而有效的流程进行训练,例如 Stable Diffusion 3、Meta 的 Movie Gen Video,可能还有许多其他专有模型。在图 9 中,我们在一个简单示例中对其进行可视化,并在算法 5 中总结训练过程。
4.2 得分匹配
现在,我们将刚刚得到的算法从常微分方程推广到随机微分方程。记住,我们可以通过下式将目标常微分方程推广到具有相同边缘分布的随机微分方程: 其中 是边缘向量场, 是通过下式表示的边缘得分函数(marginal score function) : 为了逼近边缘得分 ,我们可以使用一个神经网络,称之为得分网络(score network) 。与之前类似,我们可以设计得分匹配损失(score matching loss) 和条件得分匹配损失(conditional score matching loss) : 得分匹配损失
条件得分匹配损失
同样,区别在于使用边缘得分 与使用条件得分 。如前所述,理想情况下我们希望最小化得分匹配损失,但由于不知道 ,无法直接进行。但与之前类似,条件得分匹配损失是一个可行的替代方案:
定理 20 得分匹配损失等于条件得分匹配损失加上一个常数: 其中 C 与参数 无关。因此,它们的梯度相等: 特别地,对于极小值点 ,将有 。
证明:注意到 的公式(方程(51) )与 的公式(方程(43) )形式相同。因此,证明过程与定理 18 的证明相同,只需将 替换为 即可。证明完毕。
上述流程描述了训练扩散模型的常规流程。训练完成后,我们可以选择任意扩散系数 ,然后模拟随机微分方程: 以生成样本 。理论上,在完美训练的情况下,每个 都应生成样本 。但在实践中,我们会遇到两种类型的误差:(1)模拟随机微分方程时产生的数值误差;(2)训练误差(即模型 并不完全等于 )。因此,存在一个最优的未知噪声水平 ,可以通过测试不同的经验值来确定(例如,参见 [1, 12, 17] )。乍一看,可能会觉得同时训练两个不同的网络 和 (例如,我们希望训练扩散模型而非流模型 )是个缺点。然而,注意到我们通常可以在一个网络中直接将 和 作为两个输出,因此额外的计算开销通常很小。此外,对于高斯概率路径的特殊情况,我们即将看到 和 可以相互转换,因此无需分别训练它们。
说明 21(去噪扩散模型) 如果你熟悉扩散模型,你可能遇到过 “去噪扩散模型(denoising diffusion model)” 这一术语。这个术语如今非常流行,以至于大多数人不再使用 “去噪” 一词,而简单地用 “扩散模型(diffusion model)” 来描述使用高斯概率路径 的模型。然而,需要注意的是,如果你阅读一些最早的扩散模型论文,这可能并不直观:它们使用不同的时间约定(时间是反转的 ),因此你需要首先对时间进行重新缩放,并通过所谓的前向过程(forward processes) 构建概率路径(我们将在 4.3 节中讨论 )。
示例 22(去噪扩散模型:高斯概率路径的得分匹配) 首先,针对 的情况,实例化去噪得分匹配损失。如方程(28)中推导的,条件得分 的公式为: 代入该公式,条件得分匹配损失变为: 其中(i)代入了方程(46)并将 x 替换为 。注意,得分网络 本质上学习预测用于破坏数据样本 z 的噪声。因此,上述训练损失也被称为去噪得分匹配(denoising score matching) ,并且是最早用于训练扩散模型的方法之一。很快人们意识到,上述损失在数值上不稳定(当 时, 项会导致问题,即当添加的噪声足够少时 )。在关于去噪扩散模型的一些早期工作中(参见《去噪扩散概率模型(Denoising Diffusion Probabilistic Models)》 [9] ),因此建议在损失中去掉常数 ,并将 重新参数化为噪声预测器网络(noise predictor network) ,即: 如前所述,网络 本质上学习预测用于破坏数据样本 z 的噪声。在算法 4 中,我们总结训练过程。

除了简单性之外,高斯概率路径还有另一个有用的性质:通过学习 或 ,我们也会自动学习 ,反之亦然:
命题 1(高斯概率路径的转换公式) 对于高斯概率路径 ,条件(或边缘)向量场可以转换为边缘(或条件)得分,反之亦然:
其中,上述边缘向量场 的公式在文献中被称为概率流常微分方程(probability flow ODE) (更准确地说,是对应的常微分方程 )。
证明:对于条件向量场和条件得分,我们可以推导: 其中(i)处进行了简单代数运算。通过积分,对于边缘流向量场和边缘得分函数,相同的恒等式也成立: 其中(i)处使用了方程(51)。证明完毕。
我们可以使用转换公式,通过以下方式将得分网络 和向量场网络 相互参数化: 类似地,只要 (对于 ,该式始终成立 ),则有: 利用这种参数化,可以证明得分匹配损失和条件流匹配损失在相差一个常数的意义下是相同的。我们得出结论:对于高斯概率路径,无需分别分别训练边缘得分和边缘向量场,因为了解其中一个就足以计算另一个。特别地,我们可以选择使用流匹配或得分匹配来训练模型。在图 10 中,我们直观地比较了通过得分匹配逼近的得分和使用方程(55)参数化的得分。

图 10:两种不同方式得到的得分对比。上:通过得分匹配独立学习得到的得分场 的可视化(见算法 4 )。下:使用方程(55)参数化得到的得分场 的可视化。
如果我们训练了一个得分网络 ,根据方程(52),我们知道可以使用任意 从随机微分方程中采样: 以得到样本 (除去训练和模拟误差 )。这对应于从去噪扩散模型进行随机采样(stochastic sampling from a denoising diffusion model) 。
4.3 扩散模型文献指南
文献中围绕扩散模型和流匹配存在一整个模型家族。当你阅读这些论文时,可能会发现与本课程呈现材料的方式不同(但等价)。这有时会让阅读这些论文变得有点混乱。因此,我们想对各种框架及其差异进行简要概述,并将它们置于历史背景中。这对于理解本文档的其余部分不是必需的,而是为了你阅读文献时提供支持。
离散时间与连续时间
早期的去噪扩散模型论文 [28, 29, 9] 没有使用随机微分方程(SDEs),而是构建了离散时间的马尔可夫链,即时间步为 。时至今日,你会发现文献中有很多工作使用这种离散时间公式。虽然这种构造因其简单性而具有吸引力,但时间离散方法的缺点是,它迫使你在训练前选择时间离散化方式。此外,损失函数需要通过证据下界(ELBO) 来近似,顾名思义,它只是我们实际想要最小化的损失的一个下界。后来,Song 等人 [32] 表明,这些构造本质上是连续时间随机微分方程的近似。此外,在连续时间情况下,证据下界变得紧密(即它不再是下界 —— 例如,注意定理 18 和定理 20 是等式,而不是下界,这在离散时间情况下会有所不同 )。这使得随机微分方程构造更受欢迎,因为它在数学上被认为 “更简洁”,并且可以通过常微分方程 / 随机微分方程采样器控制模拟误差,这在训练后是一致的。然而,需要注意的是,两种模型都采用相同的损失,并且本质上没有区别。
“前向过程” 与概率路径
第一波去噪扩散模型 [28, 29, 9, 32] 没有使用 “概率路径” 这一术语,而是通过所谓的前向过程(forward process) 构建数据点 的加噪过程。这是一种形式为: 的随机微分方程。其思想是,在抽取一个数据点 后,模拟前向过程,从而破坏或 “加噪” 数据。前向过程被设计为,当 时,其分布收敛到高斯分布 。换句话说,对于 ,近似有 。注意,这本质上对应于一个概率路径:给定 的条件分布 是一个条件概率路径 ,而对 边缘化 得到的分布是边缘概率路径 。然而,需要注意的是,通过这种构造,为了训练模型以避免模拟随机微分方程,我们需要以闭合形式知道 的分布。这本质上限制了向量场 ,使得我们可以以闭合形式知道 的分布。因此,在整个扩散模型文献中,前向过程中的向量场始终是仿射形式,即 ,其中 是某个连续函数。对于这种选择,我们可以使用条件分布的已知公式 [27, 31, 12]: 注意,这些只是高斯概率路径。因此,可以说前向过程是构造(高斯)概率路径的一种特定方式 。“概率路径” 这一术语由流匹配 [14] 引入,目的是同时简化构造并使其更具一般性:首先,扩散模型的 “前向过程” 实际上从未被完全模拟(训练期间仅抽取来自 的样本 )。其次,前向过程仅在 时收敛(即我们永远无法在有限时间内到达 )。因此,我们选择在本文档中使用概率路径。
时间反转与求解福克 - 普朗克方程
扩散模型的原始描述不是通过福克 - 普朗克方程(或连续性方程)构造训练目标 或 ,而是通过前向过程的时间反转(time-reversal) [2] 。时间反转 是一个随机微分方程,其轨迹上的分布在时间上反转,即: 对于所有 和 成立 [59]。
如 Anderson [2] 所示,可以通过以下随机微分方程得到满足上述条件的时间反转: 由于 ,上述对应于我们在命题 1 中推导的训练目标的一个特定实例(由于使用了不同的时间约定,这并非显而易见。例如,参见 [15] 以获取推导 )。然而,对于生成式建模的目的,我们通常仅使用马尔可夫过程的最终点 (例如,作为生成的图像 ),而舍弃更早的时间点。因此,马尔可夫过程是否是 “真正的” 时间反转或遵循概率路径,对于许多应用来说并不重要。因此,使用时间反转不是必需的,而且常常导致次优结果,例如,概率流常微分方程通常更好 [12, 17] 。从扩散模型采样的所有方法都与时间反转不同,它们再次依赖于使用福克 - 普朗克方程。我们希望这能说明为什么如今许多人直接通过福克 - 普朗克方程构造训练目标,这一方法由 [14, 16, 1] 开创,并在本课程中使用。
流匹配 [14] 与随机插值 [1]
我们呈现的框架与流匹配和随机插值(SIs)框架最为相关。如我们所学,流匹配将自身限制在流上。事实上,流匹配的关键创新之一是表明,无需通过前向过程和随机微分方程构造,仅通过流模型就可以以可扩展的方式训练扩散模型。由于这种限制,你应该记住,从流匹配模型采样将是确定性的(仅初始 需要随机 )。随机插值包括纯流和通过我们在这里使用的 “朗之万动力学” 进行的随机微分方程扩展(见定理 13 )。随机插值得名于插值函数 ,旨在在两个分布之间进行插值。在我们使用的术语中,这对应于构造条件和边缘概率路径的另一种(主要是)等价方式。流匹配和随机插值相对于扩散模型的优势在于它们的简单性和通用性:它们的训练框架非常简单,但同时允许你通过任意概率路径 将任意分布 转换为任意分布 ,而去噪扩散模型仅适用于高斯初始分布和高斯概率路径。这为生成式建模开辟了新的可能性,我们将在本课程后面简要提及。
现在,我们总结本节的结果:
总结 23(训练生成式模型)
流匹配(Flow matching) 包括通过最小化条件流匹配损失(conditional flow matching loss) 来训练神经网络 : (条件流匹配损失) 其中 是条件向量场(见算法 5 )。训练完成后,通过模拟相应的常微分方程(见算法 1 )生成样本。要将其扩展为扩散模型,我们可以使用得分网络(score network) ,并通过条件得分匹配(conditional score matching) 对其进行训练: (去噪得分匹配损失) 对于每个扩散系数 ,模拟随机微分方程(例如,通过算法 2 ): 将生成来自 的近似样本。可以通过经验找到最优的 。
高斯概率路径
对于高斯概率路径 的特殊情况,条件得分匹配也被称为去噪得分匹配(denoising score matching) 。此时,损失和条件流匹配损失由下式给出: 在这种情况下,无需分别训练 和 ,因为我们可以在训练后通过以下公式转换它们: 同样,训练完成后,我们可以通过算法 2 模拟方程(62)中的随机微分方程,以得到样本 。
去噪扩散模型
去噪扩散模型是具有高斯概率路径的扩散模型。因此,对它们来说,学习 或 就足够了,因为它们可以相互转换。
虽然流匹配仅允许通过常微分方程进行确定性模拟,但它们允许进行确定性(概率流常微分方程)或随机性(随机微分方程采样)模拟。然而,与流匹配或随机插值不同,流匹配或随机插值允许通过任意概率路径 将任意分布 转换为任意分布 ,而去噪扩散模型仅适用于高斯初始分布 和高斯概率路径。
文献
文献中流行的扩散模型替代公式有:
- 离散时间(Discrete-time):常通过离散时间马尔可夫链对随机微分方程进行近似。
- 反转时间约定(Inverted time convention):使用反转时间约定很流行,其中 对应于 (与本文中 对应于 相反 )。
- 前向过程(Forward process):前向过程(或加噪过程)是构造(高斯)概率路径的方式。
- 通过时间反转构造训练目标(Training target via time-reversal):训练目标也可以通过随机微分方程的时间反转来构造。这是本文呈现的构造的一个特定实例(使用反转时间约定 )。